package StringMode;

import java.util.Random;

public class lx3 {
    public static void main(String[] args) {
        //生成验证码
        //内容：可以是小写字母，也可以是大写字母，还可以是数字
        //规则：
        //长度为5
        //内容中是四位字母，1位数字。
        //其中数字只有1位，但是可以出现在任意的位置。
        char[] arr = getArr();
        //装随机数的数组
        int[] rd = new int[4];
        //接收字母部分的字符串
        StringBuffer sb = new StringBuffer();
        Random r = new Random();
        for (int i = 0; i < 4; ) {
            int index = r.nextInt(52);
            boolean falg = contins(rd, index);
            if (falg) {

            }else {
                sb.append(arr[index]);
                i++;
            }
        }
        int index1 = r.nextInt(10);
        System.out.println("最初的验证码为：" + sb.append(index1));
        String str = sb.toString();
        //将顺序打乱
        //先将str转换成数组形式
        char[] strArr = str.toCharArray();
        int sj = r.nextInt(5);
        char str1= strArr[4];
        char str2 = strArr[sj];
        strArr[sj] = str1;
        strArr[4] = str2;

        //转换成字符串
        String last = new String(strArr);
        System.out.println("最后的验证码为：" + last);
    }
    //获取大小写字母的数组
    public static char[] getArr(){
        char[] arr = new char[52];
        for (int i = 0; i < arr.length; i++) {
            //根据ASCII码表来写入
            if (i<=25) {
                //添加小写字母
                arr[i] = (char) (97+i);
            }else {//27
                //添加大写字母
                // A --- 65
                arr[i] = (char) (65+i-26);
            }
        }
        return arr;
    }

    //判断随机数是否唯一的
    public static boolean contins(int[] arr, int number) {
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] == number) {
                return true;
            }
        }
        return false;
    }
}
